/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.perutaxi.segu;

import com.perutaxi.cliente.InicioMBean;
import com.perutaxi.entidades.eUsuario;
import com.perutaxi.negocio.nUsuario;
import com.perutaxi.util.GenericMBean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author PeruTaxi
 */
@ManagedBean
@SessionScoped
public class LoginMBean extends GenericMBean implements Serializable {

    private String usr;
    private String pwd;
    @ManagedProperty(value = "#{sessionMBean}")
    private SessionMBean sessionMBean;

    public LoginMBean() {
    }

    public String ingresar() throws Exception {
        String retorno = "";
        if (validarUsuario()) {
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            this.sessionMBean.setSessionTerminal(request.getRemoteAddr());
            request.getSession().setAttribute("terminal", request.getRemoteAddr());
            if (this.sessionMBean.getSessionUsuario().getRol().getId().equals(1L)) {
                retorno = "/inicio.xhtml";
            } else if (this.sessionMBean.getSessionUsuario().getRol().getId().equals(2L)) {
                retorno = "/empresa/inicio.xhtml";
            } else if (this.sessionMBean.getSessionUsuario().getRol().getId().equals(3L)) {
                retorno = "/cliente/inicio.xhtml";
            }
            return retorno;
        } else {
            return null;
        }
    }

    private boolean validarUsuario() throws Exception {
        this.sessionMBean.setSessionUsuario(null);
        eUsuario usuario = nUsuario.login(usr, pwd);
        if (usuario != null && usuario.getId() != null) {
            if (usuario.getEstado()) {
                this.sessionMBean.setSessionUsuario(usuario);
                showMessage("INGRESO SATISFACTORIO");
                return true;
            } else {
                showWarning("EL USUARIO NO SE ENCUENTRA ACTIVO");
                return false;
            }
        } else {
            showError("USUARIO O CLAVE INCORRECTO");
            return false;
        }
    }
    
    public void logout() {
        this.sessionMBean.setSessionUsuario(null);
        this.sessionMBean.setSessionTerminal(null);
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        request.getSession().removeAttribute("terminal");
        request.getSession().invalidate();
    }

    public String getUsr() {
        return usr;
    }

    public void setUsr(String usr) {
        this.usr = usr;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }
}